Bugs?: If you find a problem with this file, use the Apple Bug Reporter
stack. Include the file and version information (from above)
in the problem description and send to:
Internet: apple.bugs@applelink.apple.com
AppleLink: APPLE.BUGS
}
{$IFC UNDEFINED UsingIncludes}
{$SETC UsingIncludes := 0}
{$ENDC}
{$IFC NOT UsingIncludes}
UNIT Displays;
INTERFACE
{$ENDC}
{$IFC UNDEFINED __DISPLAYS__}
{$SETC __DISPLAYS__ := 1}
{$I+}
{$SETC DisplaysIncludes := UsingIncludes}
{$SETC UsingIncludes := 1}
{$IFC UNDEFINED __CONDITIONALMACROS__}
{$I ConditionalMacros.p}
{$ENDC}
{$IFC UNDEFINED __COMPONENTS__}
{$I Components.p}
{$ENDC}
{ Types.p }
{ MixedMode.p }
{$IFC UNDEFINED __VIDEO__}
{$I Video.p}
{$ENDC}
{ Quickdraw.p }
{ QuickdrawText.p }
{$IFC UNDEFINED __APPLEEVENTS__}
{$I AppleEvents.p}
{$ENDC}
{ Errors.p }
{ Memory.p }
{ OSUtils.p }
{ Events.p }
{ EPPC.p }
{ AppleTalk.p }
{ Files.p }
{ Finder.p }
{ PPCToolbox.p }
{ Processes.p }
{ Notification.p }
{$IFC UNDEFINED __WINDOWS__}
{$I Windows.p}
{$ENDC}
{ Controls.p }
{ Menus.p }
{$IFC UNDEFINED __EVENTS__}
{$I Events.p}
{$ENDC}
{$IFC UNDEFINED __PROCESSES__}
{$I Processes.p}
{$ENDC}
{$IFC UNDEFINED __DIALOGS__}
{$I Dialogs.p}
{$ENDC}
{ TextEdit.p }
{$PUSH}
{$ALIGN MAC68K}
{$LibExport+}
CONST
{ AppleEvents Core Suite }
kAESystemConfigNotice = 'cnfg';
{ Core Suite types }
kAEDisplayNotice = 'dspl';
kAEDisplaySummary = 'dsum';
keyDMConfigVersion = 'dmcv';
keyDMConfigFlags = 'dmcf';
keyDMConfigReserved = 'dmcr';
keyDisplayID = 'dmid';
keyDisplayComponent = 'dmdc';
keyDisplayDevice = 'dmdd';
keyDisplayFlags = 'dmdf';
keyDisplayMode = 'dmdm';
keyDisplayModeReserved = 'dmmr';
keyDisplayReserved = 'dmdr';
keyDisplayMirroredId = 'dmmi';
keyDeviceFlags = 'dddf';
keyDeviceDepthMode = 'dddm';
keyDeviceRect = 'dddr';
keyPixMapRect = 'dpdr';
keyPixMapHResolution = 'dphr';
keyPixMapVResolution = 'dpvr';
keyPixMapPixelType = 'dppt';
keyPixMapPixelSize = 'dpps';
keyPixMapCmpCount = 'dpcc';
keyPixMapCmpSize = 'dpcs';
keyPixMapAlignment = 'dppa';
keyPixMapResReserved = 'dprr';
keyPixMapReserved = 'dppr';
keyPixMapColorTableSeed = 'dpct';
keySummaryMenubar = 'dsmb';
keySummaryChanges = 'dsch';
keyDisplayOldConfig = 'dold';
keyDisplayNewConfig = 'dnew';
dmOnlyActiveDisplays = true;
dmAllDisplays = false;
{ Switch Flags }
kNoSwitchConfirmBit = 0; { Flag indicating that there is no need to confirm a switch to this mode }
kDepthNotAvailableBit = 1; { Current depth not available in new mode }
kShowModeBit = 3; { Show this mode even though it requires a confirm. }
kModeNotResizeBit = 4; { Do not use this mode to resize display (for cards that mode drives a different connector). }
{ Summary Change Flags (sticky bits indicating an operation was performed)
For example, moving a display then moving it back will still set the kMovedDisplayBit.
}
kBeginEndConfigureBit = 0;
kMovedDisplayBit = 1;
kSetMainDisplayBit = 2;
kSetDisplayModeBit = 3;
kAddDisplayBit = 4;
kRemoveDisplayBit = 5;
kNewDisplayBit = 6;
kDisposeDisplayBit = 7;
kEnabledDisplayBit = 8;
kDisabledDisplayBit = 9;
kMirrorDisplayBit = 10;
kUnMirrorDisplayBit = 11;
{ Notification Messages for extended call back routines }
kDMNotifyInstalled = 1; { At install time }
kDMNotifyEvent = 2; { Post change time }
kDMNotifyRemoved = 3; { At remove time }
kDMNotifyPrep = 4; { Pre change time }
kDMNotifyExtendEvent = 5; { Allow registrees to extend apple event before it is sent }
kDMNotifyDependents = 6; { Minor notification check without full update }
{ Notification Flags }
kExtendedNotificationProc = 0+(1 * (2**(16)));
{ types for notifyType }
kFullNotify = 0; { This is the appleevent whole nine yards notify }
kFullDependencyNotify = 1; { Only sends to those who want to know about interrelated functionality (used for updating UI) }
{ DisplayID/DeviceID constants }
kDummyDeviceID = $0FF; { This is the ID of the dummy display, used when the last “real” display is disabled.}
kInvalidDisplayID = $000; { This is the invalid ID}
kFirstDisplayID = $100;
{ bits for panelListFlags }
kAllowDuplicatesBit = 0;
{ Constants for fidelity checks }
kNoFidelity = 0;
kMinimumFidelity = 1;
kDefaultFidelity = 500; { I'm just picking a number for Apple default panels and engines}
kDefaultManufacturerFidelity = 1000; { I'm just picking a number for Manufacturer's panels and engines (overrides apple defaults)}
kAnyPanelType = 0; { Pass to DMNewEngineList for list of all panels (as opposed to specific types)}
kAnyEngineType = 0; { Pass to DMNewEngineList for list of all engines}
kAnyDeviceType = 0; { Pass to DMNewDeviceList for list of all devices}
kAnyPortType = 0; { Pass to DMNewDevicePortList for list of all devices}
{ portListFlags for DM_NewDevicePortList }
{ Should offline devices be put into the port list (such as dummy display) }
kPLIncludeOfflineDevicesBit = 0;
TYPE
DMFidelityType = LONGINT;
{ AVID is an ID for ports and devices the old DisplayID type
is carried on for compatibility
}
AVIDType = LONGINT;
DisplayIDType = AVIDType;
DMListType = Ptr;
DMListIndexType = LONGINT;
AVPowerStatePtr = Ptr;
DMComponentListEntryRec = RECORD
itemID: DisplayIDType; { DisplayID Manager}
itemComponent: Component; { Component Manager}
itemDescription: ComponentDescription; { We can always construct this if we use something beyond the compontent mgr.}
itemClass: ResType; { Class of group to put this panel (eg geometry/color/etc for panels, brightness/contrast for engines, video out/sound/etc for devices)}
itemFidelity: DMFidelityType; { How good is this item for the specified search?}
itemSubClass: ResType; { Subclass of group to put this panel. Can use to do sub-grouping (eg volume for volume panel and mute panel)}
itemSort: Point; { Set to 0 - future to sort the items in a sub group.}
itemFlags: LONGINT; { Set to 0 (future expansion)}
itemReserved: ResType; { What kind of code does the itemReference point to (right now - kPanelEntryTypeComponentMgr only)}
itemFuture1: LONGINT; { Set to 0 (future expansion - probably an alternate code style)}
itemFuture2: LONGINT; { Set to 0 (future expansion - probably an alternate code style)}
itemFuture3: LONGINT; { Set to 0 (future expansion - probably an alternate code style)}
itemFuture4: LONGINT; { Set to 0 (future expansion - probably an alternate code style)}
FUNCTION DMNewAVPanelList(displayID: DisplayIDType; panelType: ResType; minimumFidelity: DMFidelityType; panelListFlags: LONGINT; reserved: LONGINT; VAR thePanelCount: DMListIndexType; VAR thePanelList: DMListType): OSErr;
{$IFC NOT GENERATINGCFM}
INLINE $303C, $0C27, $ABEB;
{$ENDC}
FUNCTION DMNewAVEngineList(displayID: DisplayIDType; engineType: ResType; minimumFidelity: DMFidelityType; engineListFlags: LONGINT; reserved: LONGINT; VAR engineCount: DMListIndexType; VAR engineList: DMListType): OSErr;
{$IFC NOT GENERATINGCFM}
INLINE $303C, $0C28, $ABEB;
{$ENDC}
FUNCTION DMNewAVDeviceList(deviceType: ResType; deviceListFlags: LONGINT; reserved: LONGINT; VAR deviceCount: DMListIndexType; VAR deviceList: DMListType): OSErr;
{$IFC NOT GENERATINGCFM}
INLINE $303C, $0A29, $ABEB;
{$ENDC}
FUNCTION DMNewAVPortListByPortType(subType: ResType; portListFlags: LONGINT; reserved: LONGINT; VAR devicePortCount: DMListIndexType; VAR theDevicePortList: DMListType): OSErr;
FUNCTION DMDisposeList(panelList: DMListType): OSErr;
{$IFC NOT GENERATINGCFM}
INLINE $303C, $022C, $ABEB;
{$ENDC}
FUNCTION DMGetNameByAVID(theID: AVIDType; nameFlags: LONGINT; VAR name: Str255): OSErr;
{$IFC NOT GENERATINGCFM}
INLINE $303C, $062D, $ABEB;
{$ENDC}
FUNCTION DMNewAVIDByPortComponent(thePortComponent: Component; portKind: ResType; reserved: LONGINT; VAR newID: AVIDType): OSErr;
{$IFC NOT GENERATINGCFM}
INLINE $303C, $082E, $ABEB;
{$ENDC}
FUNCTION DMGetPortComponentByAVID(thePortID: DisplayIDType; VAR thePortComponent: Component; VAR theDesciption: ComponentDescription; VAR thePortKind: ResType): OSErr;
{$IFC NOT GENERATINGCFM}
INLINE $303C, $082F, $ABEB;
{$ENDC}
FUNCTION DMSendDependentNotification(notifyType: ResType; notifyClass: ResType; displayID: AVIDType; notifyComponent: ComponentInstance): OSErr;
{$IFC NOT GENERATINGCFM}
INLINE $303C, $0A30, $ABEB;
{$ENDC}
FUNCTION DMDisposeAVComponent(theAVComponent: Component): OSErr;
{$IFC NOT GENERATINGCFM}
INLINE $303C, $0231, $ABEB;
{$ENDC}
FUNCTION DMSaveScreenPrefs(reserved1: LONGINT; saveFlags: LONGINT; reserved2: LONGINT): OSErr;
{$IFC NOT GENERATINGCFM}
INLINE $303C, $0632, $ABEB;
{$ENDC}
FUNCTION DMNewAVIDByDeviceComponent(theDeviceComponent: Component; portKind: ResType; reserved: LONGINT; VAR newID: DisplayIDType): OSErr;
{$IFC NOT GENERATINGCFM}
INLINE $303C, $0833, $ABEB;
{$ENDC}
FUNCTION DMNewAVPortListByDeviceAVID(theID: AVIDType; minimumFidelity: DMFidelityType; portListFlags: LONGINT; reserved: LONGINT; VAR devicePortCount: DMListIndexType; VAR theDevicePortList: DMListType): OSErr;
{$IFC NOT GENERATINGCFM}
INLINE $303C, $0C34, $ABEB;
{$ENDC}
FUNCTION DMGetDeviceComponentByAVID(theDeviceID: AVIDType; VAR theDeviceComponent: Component; VAR theDesciption: ComponentDescription; VAR theDeviceKind: ResType): OSErr;
{$IFC NOT GENERATINGCFM}
INLINE $303C, $0835, $ABEB;
{$ENDC}
FUNCTION DMNewDisplayModeList(displayID: DisplayIDType; modeListFlags: LONGINT; reserved: LONGINT; VAR thePanelCount: DMListIndexType; VAR thePanelList: DMListType): OSErr;